// components/PrivacyAuthorize.js
const APP = getApp();

//实现说明
//https://developers.weixin.qq.com/miniprogram/dev/framework/user-privacy/PrivacyAuthorize.html
Component({
    lifetimes: {
        attached: function() {
            // 在组件实例进入页面节点树时执行

            //【在data中设置回调方法】
            let _this = this;
            this.data.checkPrivacy = function(callback){
                wx.getPrivacySetting({
                    success: res => {
                      // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
                      APP.applog.debug(['wx.getPrivacySetting',res]);
                      if (res.needAuthorization) {
                        // 需要弹出隐私协议
                        _this.setData({
                            isVisible:true,
                        },function(){
                            _this.okCallback = callback;
                        });
                      } else {
                        // 用户已经同意过隐私协议，所以不需要再弹出隐私协议，也能调用隐私接口
                        callback && callback();
                      }
                    },
                    fail: (res) => {
                        APP.applog.fail(['wx.getPrivacySetting', res]);
                    },
                    complete: () => {}
                  });
            };
            //绑定事件： bindPrivacySynchReffer
            this.triggerEvent('PrivacySynchReffer',this); //【注意】事件名称区分大小写
        },
        ready:function(){
            // 在组件在视图层布局完成后执行
            this.initPrivacy();
        },
        detached: function() {
          // 在组件实例被从页面节点树移除时执行
        },
    },
    /**
     * 组件的属性列表
     */
    properties: {
        privacies:{
            type:Array,
            value:['授权用户快速登录'],
        }
    },

    /**
     * 组件的初始数据
     */
    data: {
        isVisible:false, //显示
        resolvePrivacyAuthorization:null,
        okCallback:null,
    },

    /**
     * 组件的方法列表
     */
    methods: {
        initPrivacy(){
            APP.applog.debug('监听隐私授权');
            wx.onNeedPrivacyAuthorization((resolve, eventInfo) =>  {
                APP.applog.debug('触发本次事件的接口是：' + eventInfo.referrer);
                // 需要用户同意隐私授权时
                // 弹出开发者自定义的隐私授权弹窗
                this.data.resolvePrivacyAuthorization = resolve;
            });

            wx.requirePrivacyAuthorize({
                success: () => {
                    // 用户同意授权
                    // 继续小程序逻辑
                    APP.applog.debug('用户同意授权');
                },
                fail: () => {
                    APP.applog.error('用户拒绝授权');
                }, // 用户拒绝授权
                complete: () => {
                    APP.applog.debug('模拟请求隐私授权');
                }
            });
        },
        bindPrivacy(){
            APP.applog.debug('打开隐私协议');
            wx.openPrivacyContract({
                success: () => {}, // 打开成功
                fail: () => {}, // 打开失败
                complete: () => {}
            });
        },
        closePrivacy(){
            APP.applog.debug('关闭隐私协议');
            this.setData({
                isVisible:false,
            });
        },
        cancelPrivacy(){
            if(this.data.resolvePrivacyAuthorization){
                this.data.resolvePrivacyAuthorization({ buttonId: 'btn-common-cancel', event: 'disagree' });
                APP.applog.debug('拒绝使用隐私');
            }
            this.closePrivacy();
        },
        okPrivacy(){
            if(this.data.resolvePrivacyAuthorization){
                this.data.resolvePrivacyAuthorization({ buttonId: 'btn-common-agree', event: 'agree' });
                APP.applog.debug('同意使用隐私');
            }
            this.okCallback && this.okCallback();
            this.closePrivacy();
        }
    }
})
